# go-kit 微服务架构

## 分层架构
### 领域模型设计
#### presentation 展现层

* ui 

#### gateway 网关层

-----------------------------------------------------------------------------------

#### interface 接口层
接口服务位于用户接口层，用于处理用户发送的 Restful 请求和解析用户输入的配置文件等，并将信息传递给应用层。
**可考虑直接使用facade命名**
* dto
* facade接口

#### application 应用层

* event 应用事件
应用层事件和领域事件都统一放这里
  
    * 应用事件处理
    * 应用事件发布
  
* service 应用服务

  应用服务对多个领域服务或外部应用服务进行封装、编排和组合，对外提供粗粒度的服务。

* repository 仓储接口

#### domain 领域层

* aggregate 聚合根
  * entity 实体
  * vaule object 值对象
  * command
  * query
  * projector
  * saga
  
* event 领域事件

* service 领域服务

  对多个不同实体对象操作的领域服务

* repository 仓储接口
          存放聚合对应的查询或持久化领域对象的代码，通常包括仓储接口和仓储实现方法。为了方便聚合的拆分和组合，我们设定一个原则：一个聚合对应一个仓储

   按照 DDD 分层原则，仓储实现本应属于基础层代码，但为了微服务代码拆分和重组的便利性，我们把聚合的仓储实现代码放到了领域层对应的聚合代码包内

#### infrastructure 基础设施层
* config 应用配置
* repository 仓储实现
* cache 缓存
* mq 消息队列
* eventbus 事件总线
* 第三方包

-----------------------------------------------------------------------------------
